#include "stc15.h"
 
typedef unsigned char BYTE;
typedef unsigned int WORD;
 
#define FOSC 11059200L          //系统频率
#define BAUD 9600               //串口波特率
 
void SendData(BYTE dat);
void SendString(char *s);
void  delay_ms(unsigned char ms);
void delay_s(unsigned char s);


void main()
{
	SCON = 0x50;                //8位可变波特率 串口工作模式1
	T2L = (65536 - (FOSC/4/BAUD));   //设置波特率重装值
	T2H = (65536 - (FOSC/4/BAUD))>>8;
	AUXR = 0x14;                //T2为1T模式, 并启动定时器2
	AUXR |= 0x01;               //选择定时器2为串口1的波特率发生器
	ES = 1;                     //使能串口1中断
	EA = 1;
	while(1)
	{
		SendData('a');
		delay_s(1);
	}
}
// UART 中断服务程序
void Uart() interrupt 4
{	
	// 接收中断标志位
	if (RI)
	{
		RI = 0;                 //清除RI位
		SendData(SBUF + 1);     // 把接收的数据+1 再发送出去
	}
	// 发送中断标志位
	if (TI)
	{
		TI = 0;                 //清除TI位
		SendString("\r\nSend Successfully\r\n");//proteus 仿真建议不要用中文，换行建议用\r\n
	 }
}
// 发送串口数据
void SendData(BYTE dat)
{
  SBUF = dat;
	while(TI == 0);
	TI = 0;
}
// 发送字符串
void SendString(char *s)
{
    while (*s)                  //检测字符串结束标志
    {
        SendData(*s++);         //发送当前字符
    }
}

void delay_s(unsigned char s)
{
	unsigned int iter_cnt = (s*1000)/250;
	unsigned int iter;
	for(iter = 0;iter<iter_cnt; iter++)
	{
		delay_ms(250);
	}
}
//========================================================================
// 函数: void  delay_ms(unsigned char ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注: 
//========================================================================
void  delay_ms(unsigned char ms)
{
     unsigned int i;
     do{
          i = FOSC / 13000;
          while(--i)    ;
     }while(--ms);
}
